package _11_位运算;

/**
 * https://leetcode-cn.com/problems/sum-of-two-integers/
 * @Author: haogege
 * @Date: 2021/9/27
 */
public class _371_两整数之和 {

    // 对于计算两个整数的和，并且不能使用加减法，
    // 如果对于不需要进位的数据，那么数据的和为 a ^ b
    // 对于需要进位的数据，表示为 a ^ b 和进位数据 (a & b) << 1
    public int getSum(int a, int b) {
        // 当进位链链条0时，那么a ^ b的值就是答案
        while (b != 0) {
            // 进位数值
            int carry = (a & b) << 1;
            // 计算无进位和
            a = a ^ b;
            b = carry;
        }
        return a;
    }

}
